#include "Controleur.h"

using namespace std;

Controleur::Controleur()
{}
Controleur::~Controleur()
{
	for (int i = 0;i<vReseaux_.size();i++)
	{
		delete vReseaux_[i];
	}
	vReseaux_.clear();
}
void Controleur::ajouterReseauMobile(ReseauMobile rMobile)
{
	vReseaux_.push_back(new ReseauMobile(rMobile));
}
void Controleur::ajouterReseauFixe(ReseauFixe rFixe)
{
	vReseaux_.push_back(new ReseauFixe(rFixe));
}
void Controleur::supprimerReseau(int nid)
{
	bool supp = false;

	for (int i=0;i<vReseaux_.size();i++)
	{
		if ((vReseaux_[i]->getNid()) == nid)
		{
			for (int j=i; j<(vReseaux_.size()-1); j++)
			{
				vReseaux_[i] = vReseaux_[i+1];
			}
			vReseaux_.pop_back();
			supp = true;
		}
	}

	if (!supp) cout<<"ce nid n'appartient a aucun Reseau connu."<<endl<<endl;
}
void Controleur::chercherReseau(int nid) const
{
	bool trouve = false;
	for (int i=0;i<vReseaux_.size();i++)
	{
		if (vReseaux_[i]->getNid() == nid)
		{
			vReseaux_[i]->affiche();
			trouve = true;
		}
	}
	if (!trouve)
		cout<<"Reseau non trouve"<<endl<<endl;
}
void Controleur::listeReseauMobile(double capReseau) const
{
	for (int i=0;i<vReseaux_.size();i++)
	{
		if ( (vReseaux_[i]->getCapaciteReseau() >= capReseau) && ( typeid(*vReseaux_[i]) == typeid(ReseauMobile) ) )
		{
			vReseaux_[i]->affiche();
		}
	}
}
void Controleur::listeReseauFixe(double capReseau) const
{
	for (int i=0;i<vReseaux_.size();i++)
	{
		if ( (vReseaux_[i]->getCapaciteReseau() >= capReseau) && ( typeid(*vReseaux_[i]) == typeid(ReseauFixe) ) )
		{
			vReseaux_[i]->affiche();
		}
	}
}
void Controleur::ajouterMessage(int nid, std::string message)
{
	for (int i=0;i<vReseaux_.size();i++)
	{
		if ( vReseaux_[i]->getNid() == nid )
		{
			vReseaux_[i]->ajouterMessage(message);
		}
	}
}